%module CEGUISystem

%{
#include "CEGUISystem.h"
	%}

%import "CEGUIString.i"
%import "CEGUIWindow.i"

//#include "CEGUIBase.h"

//#include "CEGUIRenderer.h"
//#include "CEGUIInputEvent.h"
//#include "CEGUIResourceProvider.h"

// Start of CEGUI namespace section
namespace CEGUI
{

	%nodefaultctor System;
	class System //: public Singleton<System> //, public EventSet
{
public:

	static System& getSingleton( void );

	static System* getSingletonPtr( void );

	static void destroy();
    
	void	setDefaultFont(const String& name);

//	void	renderGUI(void);

	Window*	setGUISheet(Window* sheet);

	Window*	getGUISheet(void) const		{return d_activeSheet;}

	void	setDefaultMouseCursor(const String& imageset, const String& image_name);

	Window*	getWindowContainingMouse(void) const	{return d_wndWithMouse;}

	float	getMouseMoveScaling(void) const;

	void	setMouseMoveScaling(float scaling);

//	void	notifyWindowDestroyed(const Window* window);

//    void notifyDisplaySizeChanged(const Size& new_size);

//	bool	injectMouseMove(float delta_x, float delta_y);

//	bool	injectMouseLeaves(void);

//	bool	injectMouseButtonDown(MouseButton button);

//	bool	injectMouseButtonUp(MouseButton button);

//	bool	injectKeyDown(uint key_code);

//	bool	injectKeyUp(uint key_code);

//	bool	injectChar(utf32 code_point);

//	bool	injectMouseWheelChange(float delta);

//	bool	injectMousePosition(float x_pos, float y_pos);

//	bool	injectTimePulse(float timeElapsed);

private:
    ~System(void);
};

} // End of  CEGUI namespace section
